﻿using System;
using System.ServiceModel;
using System.ComponentModel;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.ContasCorrente.Service.ServiceContract
{
    [ExceptionShielding]
    [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.ContasCorrente.Service.ServiceContract", Name = "IContasCorrente", SessionMode = SessionMode.Allowed)]
    public interface IContasCorrente
    {
        /// <summary>
        /// Historico:
        /// Data : 18/12/2007
        /// Autor: Ludmilla Modesto 
        /// Obs.: Criado. Metodo que retorna o codigo do Cliente na atividade de Contas Correntes
        /// </summary>
        /// <returns></returns>
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))] 
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarPosicaoContasCorrente")]
        Sinacor.Servico.Bovespa.ContasCorrente.Service.DataContract.Response.PosicaoContasCorrenteResponse
            ConsultarPosicaoContasCorrente(Sinacor.Servico.Bovespa.ContasCorrente.Service.DataContract.Request.ConsultarPosicaoContaCorrenteRequest request);


        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.BusinessFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.ValidationFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.GeneralFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
        [FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarHistoricoContasCorrentes")]
        List<DataContract.Response.HistoricoContaCorrenteResponse> ConsultarHistoricoContasCorrentes(DataContract.Request.FiltroHistoricoContaCorrenteRequest request);
    }
}